package com.mkait.thief.scheduled;

import com.mkait.thief.service.ComplaintService;
import com.mkait.thief.service.RefundService;
import com.mkait.thief.service.ScheduledJobService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

//@Component
@Slf4j
public class ScheduledJob {

    @Autowired
    private ScheduledJobService scheduledJobService;

    @Autowired
    private RefundService refundService;

    @Autowired
    private ComplaintService complaintService;

    /**
     * 验证并更新访问mkait的token
     * 程序启动3分钟后开始，每次间隔3分钟执行一次
     */
    @Scheduled(fixedRate = 1000 * 60 * 3,initialDelay = 1000 * 60 * 3)
    public void judgeAndUpdateToken(){
        log.info("验证并更新访问mkait的token");
        scheduledJobService.judgeAndUpdateToken();
    }


    /**
     * 自动处理商家已同意退款
     * 程序启动30分钟后开始，每次间隔12分钟执行一次
     */
    @Scheduled(fixedRate = 1000 * 60 * 12 ,initialDelay = 1000 * 60 * 30)
    public void autoRefund(){
        log.info("自动处理商家已同意退款开始---------------------------------");
        refundService.refundService();
        log.info("自动处理商家已同意退款结束---------------------------------");
    }

    /**
     * 自动验证商家已同意退款
     * 程序启动32分钟后开始，每次间隔7分钟执行一次
     */
    @Scheduled(fixedRate = 1000 * 60 * 7 ,initialDelay = 1000 * 60 * 32)
    public void autoVerifyRefund(){
        log.info("开始自动验证已退款的订单号是否退款成功-------------------------");
        refundService.verifyRefundService();
        log.info("自动验证已退款的订单号是否退款成功结束-------------------------");
    }

    /**
     * 处理投诉
     * 程序启动10分钟后开始，每次间隔3小时执行一次
     */
    @Scheduled(fixedRate = 1000 * 60 * 60 * 3 ,initialDelay = 1000 * 60 * 10)
    public void handleComplaint(){
        log.info("开始自动处理超过24小时的投诉--------------------------------");
        complaintService.handleComplaint();
        log.info("自动处理超过24小时的投诉结束--------------------------------");
    }
}
